package cn.yym.test.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

/**
 * 退出登录，就是清除session就可以
 */
@WebServlet(value = "/logout", name = "LogoutServlet")
public class LogoutServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        session.invalidate();  //手动让session失效，意思就是从服务器中把session清掉

        /**
         * 退出登录后，我们只是让服务端的session清除，但是如果用户在登录时候，勾选了 "记住我" 这个checkbox,
         * 那么会在浏览器端保存了  username和password, 并没有实现真正意义上的退出，所有我们从新写回cookie, 并设置很短的时间
         * 让其覆盖浏览器端对应的cookie信息，从而达到让浏览器端保存的用户名和密码失效。
         */
        Cookie usernameCookie = new Cookie("username", "");
        Cookie passwordCookie = new Cookie("password", "");

        usernameCookie.setMaxAge(0);
        passwordCookie.setMaxAge(0);

        resp.addCookie(usernameCookie);
        resp.addCookie(passwordCookie);

        resp.sendRedirect("login.jsp");  //退出登录之后重新回到登录页面
    }
}
